//    This file is part of Arduino LXCan Bus Device library.

//    The Arduino LXCan Bus Device library allows to turn Arduino into "self-made" KNX bus device.
//    Copyright (C) 2014 2015 Franck MARINI (fm@liwan.fr)

//    The Arduino LXCan Bus Device library is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.

//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.

//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.


// File : LXCanDPT.h
// Author : Franck Marini
// Description : Definition of the KNX Datapoints types as per "knx.org" specification

#ifndef __LXCANDPT_H
#define __LXCANDPT_H

#include "LXCanConfig.h" // DPT arrays are stored in flash using PROG MEMORY

// List of the DPT formats
// A Character
// A[n] String of n characters
// B Boolean / Bit set
// C Control
// E Exponent
// F Floating point value
// M Mantissa
// N eNumeration
// r Reserved bit or field
// S Sign
// U Unsigned value
// V 2's Complement signed value
// Z8 Standardised Status/Command B8. Encoding as in DPT_StatusGen
enum eLXCanDPT_Format {
	LXCAN_DPT_FORMAT_B1 = 0,
	LXCAN_DPT_FORMAT_B2,
	LXCAN_DPT_FORMAT_B1U3,
	LXCAN_DPT_FORMAT_A8,
	LXCAN_DPT_FORMAT_U8,
	LXCAN_DPT_FORMAT_V8,
	LXCAN_DPT_FORMAT_B5N3,
	LXCAN_DPT_FORMAT_U16,
	LXCAN_DPT_FORMAT_V16,
	LXCAN_DPT_FORMAT_F16,
	LXCAN_DPT_FORMAT_N3N5R2N6R2N6,
	LXCAN_DPT_FORMAT_R3N5R4N4R1U7,
	LXCAN_DPT_FORMAT_U32,
	LXCAN_DPT_FORMAT_V32,
	LXCAN_DPT_FORMAT_F32,
	LXCAN_DPT_FORMAT_U4U4U4U4U4U4B4N4,
	LXCAN_DPT_FORMAT_A112,
	LXCAN_DPT_FORMAT_R2U6, 
	LXCAN_DPT_FORMAT_B1R1U6,
	LXCAN_DPT_FORMAT_U8R4U4R3U5U3U5R2U6B16,
	LXCAN_DPT_FORMAT_N8,
	LXCAN_DPT_FORMAT_B8,
	LXCAN_DPT_FORMAT_B16,
	LXCAN_DPT_FORMAT_N2,
	LXCAN_DPT_FORMAT_AN,
	LXCAN_DPT_FORMAT_U4U4,
	LXCAN_DPT_FORMAT_R1B1U6,
	LXCAN_DPT_FORMAT_B32,
	LXCAN_DPT_FORMAT_V64,
	LXCAN_DPT_FORMAT_B24,
	LXCAN_DPT_FORMAT_N3,
	LXCAN_DPT_FORMAT_B1Z8,
	LXCAN_DPT_FORMAT_N8Z8,
	LXCAN_DPT_FORMAT_U8Z8,
	LXCAN_DPT_FORMAT_U16Z8,
	LXCAN_DPT_FORMAT_V8Z8,
	LXCAN_DPT_FORMAT_V16Z8,
	LXCAN_DPT_FORMAT_U16N8,
	LXCAN_DPT_FORMAT_U8B8,
	LXCAN_DPT_FORMAT_V16B8,
	LXCAN_DPT_FORMAT_V16B16,
	LXCAN_DPT_FORMAT_U8N8,
	LXCAN_DPT_FORMAT_V16V16V16,
	LXCAN_DPT_FORMAT_V16V16V16V16,
	LXCAN_DPT_FORMAT_V16U8B8,
	LXCAN_DPT_FORMAT_V16U8B16,
	LXCAN_DPT_FORMAT_U16U8N8N8P8,
	LXCAN_DPT_FORMAT_U5U5U16,
	LXCAN_DPT_FORMAT_V32Z8,
	LXCAN_DPT_FORMAT_U8N8N8N8B8B8,
	LXCAN_DPT_FORMAT_U16V16,
	LXCAN_DPT_FORMAT_N16U32,
	LXCAN_DPT_FORMAT_F16F16F16,
	LXCAN_DPT_FORMAT_V8N8N8,
	LXCAN_DPT_FORMAT_V16V16N8N8,
	LXCAN_DPT_FORMAT_U16U8,
	LXCAN_DPT_FORMAT_V32N8Z8,
	LXCAN_DPT_FORMAT_U16U32U8N8,
	LXCAN_DPT_FORMAT_A8A8A8A8,
	LXCAN_DPT_FORMAT_U8U8U8,
	LXCAN_DPT_FORMAT_A8A8
};

// Definition of the length in bits according to the format
// NB : table is stored in flash program memory to save RAM
const uint8_t LXCanDPTFormatToLengthBit[] = 
{
	1 , //  LXCAN_DPT_FORMAT_B1 = 0,
	2 , //  LXCAN_DPT_FORMAT_B2,
	4 , // LXCAN_DPT_FORMAT_B1U3
	8 , //  LXCAN_DPT_FORMAT_A8,
	8 , //  LXCAN_DPT_FORMAT_U8,
	8 , //  LXCAN_DPT_FORMAT_V8,
	8 , //  LXCAN_DPT_FORMAT_B5N3,
	16, //  LXCAN_DPT_FORMAT_U16,
	16, //  LXCAN_DPT_FORMAT_V16,
	16, //  LXCAN_DPT_FORMAT_F16,
	24, //  LXCAN_DPT_FORMAT_N3N5R2N6N2N6,
	24, //  LXCAN_DPT_FORMAT_R3N5R4N4R1N7,
	32, //  LXCAN_DPT_FORMAT_U32,
	32, //  LXCAN_DPT_FORMAT_V32,
	32, //  LXCAN_DPT_FORMAT_F32,
	32, //  LXCAN_DPT_FORMAT_U4U4U4U4U4U4B4N4,
	112, //  LXCAN_DPT_FORMAT_A112,
	8 , //  LXCAN_DPT_FORMAT_R2U6, 
	8 , //  LXCAN_DPT_FORMAT_B1R1U6,
	56, //  LXCAN_DPT_FORMAT_U8R4U4R3U5U3U5R2U6B16,
	8 , //  LXCAN_DPT_FORMAT_N8,
	8 , //  LXCAN_DPT_FORMAT_B8,
	16, //  LXCAN_DPT_FORMAT_B16,
	2 ,//  LXCAN_DPT_FORMAT_N2,
	112,//  LXCAN_DPT_FORMAT_AN,
	8 , //  LXCAN_DPT_FORMAT_U4U4,
	8 , //  LXCAN_DPT_FORMAT_R1B1U6,
	32, //  LXCAN_DPT_FORMAT_B32,
	64, //  LXCAN_DPT_FORMAT_V64,
	24, //  LXCAN_DPT_FORMAT_B24,
	3 , //  LXCAN_DPT_FORMAT_N3,
	2 , //  LXCAN_DPT_FORMAT_B1Z8,
	16, //  LXCAN_DPT_FORMAT_N8Z8,
	16, //  LXCAN_DPT_FORMAT_U8Z8,
	24, //  LXCAN_DPT_FORMAT_U16Z8,
	16, //  LXCAN_DPT_FORMAT_V8Z8,
	24, //  LXCAN_DPT_FORMAT_V16Z8,
	24, //  LXCAN_DPT_FORMAT_U16N8,
	16, //  LXCAN_DPT_FORMAT_U8B8,
	24, //  LXCAN_DPT_FORMAT_V16B8,
	32, //  LXCAN_DPT_FORMAT_V16B16,
	16, //  LXCAN_DPT_FORMAT_U8N8,
	48, //  LXCAN_DPT_FORMAT_V16V16V16,
	64, //  LXCAN_DPT_FORMAT_V16V16V16V16,
	32, //  LXCAN_DPT_FORMAT_V16U8B8,
	40, //  LXCAN_DPT_FORMAT_V16U8B16,
	48, //  LXCAN_DPT_FORMAT_U16U8N8N8P8,
	16, //  LXCAN_DPT_FORMAT_U5U5U6,
	40, //  LXCAN_DPT_FORMAT_V32Z8,
	48, //  LXCAN_DPT_FORMAT_U8N8N8N8B8B8,
	32, //  LXCAN_DPT_FORMAT_U16V16,
	48, //  LXCAN_DPT_FORMAT_N16U32,
	48, //  LXCAN_DPT_FORMAT_F16F16F16,
	24, //  LXCAN_DPT_FORMAT_V8N8N8,
	48, //  LXCAN_DPT_FORMAT_V16V16N8N8,
	24, //  LXCAN_DPT_FORMAT_U16U8,
	48, //  LXCAN_DPT_FORMAT_V32N8Z8,
	64, //  LXCAN_DPT_FORMAT_U16U32U8N8,
	24, //  LXCAN_DPT_FORMAT_A8A8A8A8,
	24, //  LXCAN_DPT_FORMAT_U8U8U8,
	16 //  LXCAN_DPT_FORMAT_A8A8
};

// Define all the LXCAN Datapoint IDs (from 1.001 to 14.007 only)
enum e_LXCanDPT_ID { 
	LXCAN_DPT_1_001 = 0, // 1.001 B1 DPT_Switch
	LXCAN_DPT_1_002, // 1.002 B1 DPT_Bool
	LXCAN_DPT_1_003, // 1.003 B1 DPT_Enable
	LXCAN_DPT_1_004, // 1.004 B1 DPT_Ramp
	LXCAN_DPT_1_005, // 1.005 B1 DPT_Alarm
	LXCAN_DPT_1_006, // 1.006 B1 DPT_BinaryValue
	LXCAN_DPT_1_007, // 1.007 B1 DPT_Step
	LXCAN_DPT_1_008, // 1.008 B1 DPT_UpDown
	LXCAN_DPT_1_009, // 1.009 B1 DPT_OpenClose
	LXCAN_DPT_1_010, // 1.010 B1 DPT_Start
	LXCAN_DPT_1_011, // 1.011 B1 DPT_State
	LXCAN_DPT_1_012, // 1.012 B1 DPT_Invert
	LXCAN_DPT_1_013, // 1.013 B1 DPT_DimSendStyle
	LXCAN_DPT_1_014, // 1.014 B1 DPT_InputSource
	LXCAN_DPT_1_015, // 1.015 B1 DPT_Reset
	LXCAN_DPT_1_016, // 1.016 B1 DPT_Ack
	LXCAN_DPT_1_017, // 1.017 B1 DPT_Trigger
	LXCAN_DPT_1_018, // 1.018 B1 DPT_Occupancy
	LXCAN_DPT_1_019, // 1.019 B1 DPT_Window_Door
	LXCAN_DPT_1_021, // 1.021 B1 DPT_LogicalFunction
	LXCAN_DPT_1_022, // 1.022 B1 DPT_Scene_AB
	LXCAN_DPT_1_023, // 1.023 B1 DPT_ShutterBlinds_Mode
	LXCAN_DPT_1_100, // 1.100 B1 DPT_Heat/Cool
	LXCAN_DPT_2_001, // 2.001 B2 DPT_Switch_Control
	LXCAN_DPT_2_002, // 2.002 B2 DPT_Bool_Control
	LXCAN_DPT_2_003, // 2.003 B2 DPT_Enable_Control
	LXCAN_DPT_2_004, // 2.004 B2 DPT_Ramp_Control
	LXCAN_DPT_2_005, // 2.005 B2 DPT_Alarm_Control
	LXCAN_DPT_2_006, // 2.006 B2 DPT_BinaryValue_Control
	LXCAN_DPT_2_007, // 2.007 B2 DPT_Step_Control
	LXCAN_DPT_2_008, // 2.008 B2 DPT_Direction1_Control
	LXCAN_DPT_2_009, // 2.009 B2 DPT_Direction2_Control
	LXCAN_DPT_2_010, // 2.010 B2 DPT_Start_Control
	LXCAN_DPT_2_011, // 2.011 B2 DPT_State_Control
	LXCAN_DPT_2_012, // 2.012 B2 DPT_Invert_Control
	LXCAN_DPT_3_007, // 3.007 B1U3 DPT_Control_Dimming
	LXCAN_DPT_3_008, // 3.008 B1U3 DPT_Control_Blinds
	LXCAN_DPT_4_001, // 4.001 A8 DPT_Char_ASCII
	LXCAN_DPT_4_002, // 4.002 A8 DPT_Char_8859_1
	LXCAN_DPT_5_001, // 5.001 U8 DPT_Scaling
	LXCAN_DPT_5_003, // 5.003 U8 DPT_Angle
	LXCAN_DPT_5_004, // 5.004 U8 DPT_Percent_U8
	LXCAN_DPT_5_005, // 5.005 U8 DPT_DecimalFactor
	LXCAN_DPT_5_006, // 5.006 U8 DPT_Tariff
	LXCAN_DPT_5_010, // 5.010 U8 DPT_Value_1_Ucount
	LXCAN_DPT_6_001, // 6.001 V8 DPT_Percent_V8
	LXCAN_DPT_6_010, // 6.010 V8 DPT_Value_1_Count
	LXCAN_DPT_6_020, // 6.020 B5N3 DPT_Status_Mode3
	LXCAN_DPT_7_001, // 7.001 U16 DPT_Value_2_Ucount
	LXCAN_DPT_7_002, // 7.002 U16 DPT_TimePeriodMsec
	LXCAN_DPT_7_003, // 7.003 U16 DPT_TimePeriod10MSec
	LXCAN_DPT_7_004, // 7.004 U16 DPT_TimePeriod100MSec
	LXCAN_DPT_7_005, // 7.005 U16 DPT_TimePeriodSec
	LXCAN_DPT_7_006, // 7.006 U16 DPT_TimePeriodMin
	LXCAN_DPT_7_007, // 7.007 U16 DPT_TimePeriodHrs
	LXCAN_DPT_7_010, // 7.010 U16 DPT_PropDataType
	LXCAN_DPT_7_011, // 7.011 U16 DPT_Length_mm
	LXCAN_DPT_7_012, // 7.012 U16 DPT_UElCurrentmA
	LXCAN_DPT_7_013, // 7.013 U16 DPT_Brightness
	LXCAN_DPT_8_001, // 8.001 V16 DPT_Value_2_Count
	LXCAN_DPT_8_002, // 8.002 V16 DPT_DeltaTimeMsec
	LXCAN_DPT_8_003, // 8.003 V16 DPT_DeltaTime10MSec
	LXCAN_DPT_8_004, // 8.004 V16 DPT_DeltaTime100MSec
	LXCAN_DPT_8_005, // 8.005 V16 DPT_DeltaTimeSec
	LXCAN_DPT_8_006, // 8.006 V16 DPT_DeltaTimeMin
	LXCAN_DPT_8_007, // 8.007 V16 DPT_DeltaTimeHrs
	LXCAN_DPT_8_010, // 8.010 V16 DPT_Percent_V16
	LXCAN_DPT_8_011, // 8.011 V16 DPT_Rotation_Angle
	LXCAN_DPT_9_001, // 9.001 F16 DPT_Value_Temp
	LXCAN_DPT_9_002, // 9.002 F16 DPT_Value_Tempd
	LXCAN_DPT_9_003, // 9.003 F16 DPT_Value_Tempa
	LXCAN_DPT_9_004, // 9.004 F16 DPT_Value_Lux
	LXCAN_DPT_9_005, // 9.005 F16 DPT_Value_Wsp
	LXCAN_DPT_9_006, // 9.006 F16 DPT_Value_Pres
	LXCAN_DPT_9_007, // 9.007 F16 DPT_Value_Humidity
	LXCAN_DPT_9_008, // 9.008 F16 DPT_Value_AirQuality
	LXCAN_DPT_9_010, // 9.010 F16 DPT_Value_Time1
	LXCAN_DPT_9_011, // 9.011 F16 DPT_Value_Time2
	LXCAN_DPT_9_020, // 9.020 F16 DPT_Value_Volt
	LXCAN_DPT_9_021, // 9.021 F16 DPT_Value_Curr
	LXCAN_DPT_9_022, // 9.022 F16 DPT_PowerDensity
	LXCAN_DPT_9_023, // 9.023 F16 DPT_KelvinPerPercent
	LXCAN_DPT_9_024, // 9.024 F16 DPT_Power
	LXCAN_DPT_9_025, // 9.025 F16 DPT_Value_Volume_Flow
	LXCAN_DPT_9_026, // 9.026 F16 DPT_Rain_Amount
	LXCAN_DPT_9_027, // 9.027 F16 DPT_Value_Temp_F
	LXCAN_DPT_9_028, // 9.028 F16 DPT_Value_Wsp_kmh
	LXCAN_DPT_10_001, // 10.001 N3N5r2N6r2N6 DPT_TimeOfDay
	LXCAN_DPT_11_001, // 11.001 r3N5r4N4r1U7 DPT_Date
	LXCAN_DPT_12_001, // 12.001 U32 DPT_Value_4_Ucount
	LXCAN_DPT_13_001, // 13.001 V32 DPT_Value_4_Count
	LXCAN_DPT_13_010, // 13.010 V32 DPT_ActiveEnergy
	LXCAN_DPT_13_011, // 13.011 V32 DPT_ApparantEnergy
	LXCAN_DPT_13_012, // 13.012 V32 DPT_ReactiveEnergy
	LXCAN_DPT_13_013, // 13.013 V32 DPT_ActiveEnergy_kWh
	LXCAN_DPT_13_014, // 13.014 V32 DPT_ApparantEnergy_kVAh
	LXCAN_DPT_13_015, // 13.015 V32 DPT_ReactiveEnergy_kVARh
	LXCAN_DPT_13_100, // 13.100 V32 DPT_LongDeltaTimeSec
	LXCAN_DPT_14_000, // 14.000 F32 DPT_Value_Acceleration
	LXCAN_DPT_14_001, // 14.001 F32 DPT_Value_Acceleration_Angular
	LXCAN_DPT_14_002, // 14.002 F32 DPT_Value_Activation_Energy
	LXCAN_DPT_14_003, // 14.003 F32 DPT_Value_Activity
	LXCAN_DPT_14_004, // 14.004 F32 DPT_Value_Mol
	LXCAN_DPT_14_005, // 14.005 F32 DPT_Value_Amplitude
	LXCAN_DPT_14_006, // 14.006 F32 DPT_Value_AngleRad
	LXCAN_DPT_14_007 // 14.007 F32 DPT_Value_AngleDeg
};		 

// Definition of the format according to the ID
// NB : table is stored in flash program memory to save RAM
const uint8_t LXCanDPTIdToFormat[] = {
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_001, // 1.001 B1 DPT_Switch
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_002, // 1.002 B1 DPT_Bool
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_003, // 1.003 B1 DPT_Enable
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_004, // 1.004 B1 DPT_Ramp
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_005, // 1.005 B1 DPT_Alarm
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_006, // 1.006 B1 DPT_BinaryValue
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_007, // 1.007 B1 DPT_Step
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_008, // 1.008 B1 DPT_UpDown
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_009, // 1.009 B1 DPT_OpenClose
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_010, // 1.010 B1 DPT_Start
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_011, // 1.011 B1 DPT_State
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_012, // 1.012 B1 DPT_Invert
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_013, // 1.013 B1 DPT_DimSendStyle
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_014, // 1.014 B1 DPT_InputSource
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_015, // 1.015 B1 DPT_Reset
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_016, // 1.016 B1 DPT_Ack
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_017, // 1.017 B1 DPT_Trigger
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_018, // 1.018 B1 DPT_Occupancy
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_019, // 1.019 B1 DPT_Window_Door
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_021, // 1.021 B1 DPT_LogicalFunction
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_022, // 1.022 B1 DPT_Scene_AB
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_023, // 1.023 B1 DPT_ShutterBlinds_Mode
	LXCAN_DPT_FORMAT_B1, //  LXCAN_DPT_1_100, // 1.100 B1 DPT_Heat/Cool
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_001, // 2.001 B2 DPT_Switch_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_002, // 2.002 B2 DPT_Bool_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_003, // 2.003 B2 DPT_Enable_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_004, // 2.004 B2 DPT_Ramp_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_005, // 2.005 B2 DPT_Alarm_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_006, // 2.006 B2 DPT_BinaryValue_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_007, // 2.007 B2 DPT_Step_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_008, // 2.008 B2 DPT_Direction1_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_009, // 2.009 B2 DPT_Direction2_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_010, // 2.010 B2 DPT_Start_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_011, // 2.011 B2 DPT_State_Control
	LXCAN_DPT_FORMAT_B2, //  LXCAN_DPT_2_012, // 2.012 B2 DPT_Invert_Control
	LXCAN_DPT_FORMAT_B1U3, //  LXCAN_DPT_3_007, // 3.007 B1U3 DPT_Control_Dimming
	LXCAN_DPT_FORMAT_B1U3, //  LXCAN_DPT_3_008, // 3.008 B1U3 DPT_Control_Blinds
	LXCAN_DPT_FORMAT_A8, //  LXCAN_DPT_4_001, // 4.001 A8 DPT_Char_ASCII
	LXCAN_DPT_FORMAT_A8, //  LXCAN_DPT_4_002, // 4.002 A8 DPT_Char_8859_1
	LXCAN_DPT_FORMAT_U8, //  LXCAN_DPT_5_001, // 5.001 U8 DPT_Scaling
	LXCAN_DPT_FORMAT_U8, //  LXCAN_DPT_5_003, // 5.003 U8 DPT_Angle
	LXCAN_DPT_FORMAT_U8, //  LXCAN_DPT_5_004, // 5.004 U8 DPT_Percent_U8
	LXCAN_DPT_FORMAT_U8, //  LXCAN_DPT_5_005, // 5.005 U8 DPT_DecimalFactor
	LXCAN_DPT_FORMAT_U8, //  LXCAN_DPT_5_006, // 5.006 U8 DPT_Tariff
	LXCAN_DPT_FORMAT_U8, //  LXCAN_DPT_5_010, // 5.010 U8 DPT_Value_1_Ucount
	LXCAN_DPT_FORMAT_V8, //  LXCAN_DPT_6_001, // 6.001 V8 DPT_Percent_V8
	LXCAN_DPT_FORMAT_V8, //  LXCAN_DPT_6_010, // 6.010 V8 DPT_Value_1_Count
	LXCAN_DPT_FORMAT_B5N3, //  LXCAN_DPT_6_020, // 6.020 B5N3 DPT_Status_Mode3
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_001, // 7.001 U16 DPT_Value_2_Ucount
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_002, // 7.002 U16 DPT_TimePeriodMsec
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_003, // 7.003 U16 DPT_TimePeriod10MSec
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_004, // 7.004 U16 DPT_TimePeriod100MSec
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_005, // 7.005 U16 DPT_TimePeriodSec
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_006, // 7.006 U16 DPT_TimePeriodMin
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_007, // 7.007 U16 DPT_TimePeriodHrs
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_010, // 7.010 U16 DPT_PropDataType
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_011, // 7.011 U16 DPT_Length_mm
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_012, // 7.012 U16 DPT_UElCurrentmA
	LXCAN_DPT_FORMAT_U16, //  LXCAN_DPT_7_013, // 7.013 U16 DPT_Brightness
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_001, // 8.001 V16 DPT_Value_2_Count
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_002, // 8.002 V16 DPT_DeltaTimeMsec
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_003, // 8.003 V16 DPT_DeltaTime10MSec
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_004, // 8.004 V16 DPT_DeltaTime100MSec
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_005, // 8.005 V16 DPT_DeltaTimeSec
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_006, // 8.006 V16 DPT_DeltaTimeMin
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_007, // 8.007 V16 DPT_DeltaTimeHrs
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_010, // 8.010 V16 DPT_Percent_V16
	LXCAN_DPT_FORMAT_V16, //  LXCAN_DPT_8_011, // 8.011 V16 DPT_Rotation_Angle
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_001, // 9.001 F16 DPT_Value_Temp
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_002, // 9.002 F16 DPT_Value_Tempd
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_003, // 9.003 F16 DPT_Value_Tempa
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_004, // 9.004 F16 DPT_Value_Lux
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_005, // 9.005 F16 DPT_Value_Wsp
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_006, // 9.006 F16 DPT_Value_Pres
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_007, // 9.007 F16 DPT_Value_Humidity
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_008, // 9.008 F16 DPT_Value_AirQuality
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_010, // 9.010 F16 DPT_Value_Time1
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_011, // 9.011 F16 DPT_Value_Time2
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_020, // 9.020 F16 DPT_Value_Volt
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_021, // 9.021 F16 DPT_Value_Curr
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_022, // 9.022 F16 DPT_PowerDensity
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_023, // 9.023 F16 DPT_KelvinPerPercent
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_024, // 9.024 F16 DPT_Power
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_025, // 9.025 F16 DPT_Value_Volume_Flow
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_026, // 9.026 F16 DPT_Rain_Amount
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_027, // 9.027 F16 DPT_Value_Temp_F
	LXCAN_DPT_FORMAT_F16, //  LXCAN_DPT_9_028, // 9.028 F16 DPT_Value_Wsp_kmh
	LXCAN_DPT_FORMAT_N3N5R2N6R2N6, //  LXCAN_DPT_10_001, // 10.001 N3N5r2N6r2N6 DPT_TimeOfDay
	LXCAN_DPT_FORMAT_R3N5R4N4R1U7, //  LXCAN_DPT_11_001, // 11.001 r3N5r4N4r1U7 DPT_Date
	LXCAN_DPT_FORMAT_U32, //  LXCAN_DPT_12_001, // 12.001 U32 DPT_Value_4_Ucount
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_001, // 13.001 V32 DPT_Value_4_Count
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_010, // 13.010 V32 DPT_ActiveEnergy
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_011, // 13.011 V32 DPT_ApparantEnergy
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_012, // 13.012 V32 DPT_ReactiveEnergy
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_013, // 13.013 V32 DPT_ActiveEnergy_kWh
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_014, // 13.014 V32 DPT_ApparantEnergy_kVAh
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_015, // 13.015 V32 DPT_ReactiveEnergy_kVARh
	LXCAN_DPT_FORMAT_V32, //  LXCAN_DPT_13_100, // 13.100 V32 DPT_LongDeltaTimeSec
	LXCAN_DPT_FORMAT_F32, //  LXCAN_DPT_14_000, // 14.000 F32 DPT_Value_Acceleration
	LXCAN_DPT_FORMAT_F32, //  LXCAN_DPT_14_001, // 14.001 F32 DPT_Value_Acceleration_Angular
	LXCAN_DPT_FORMAT_F32, //  LXCAN_DPT_14_002, // 14.002 F32 DPT_Value_Activation_Energy
	LXCAN_DPT_FORMAT_F32, //  LXCAN_DPT_14_003, // 14.003 F32 DPT_Value_Activity
	LXCAN_DPT_FORMAT_F32, //  LXCAN_DPT_14_004, // 14.004 F32 DPT_Value_Mol
	LXCAN_DPT_FORMAT_F32, //  LXCAN_DPT_14_005, // 14.005 F32 DPT_Value_Amplitude
	LXCAN_DPT_FORMAT_F32, //  LXCAN_DPT_14_006, // 14.006 F32 DPT_Value_AngleRad
	LXCAN_DPT_FORMAT_F32 //  LXCAN_DPT_14_007, // 14.007 F32 DPT_Value_AngleDeg
};

#endif // LXCANDPT_H
